package cn.net.yugu.doraemon.track.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * @author wanghongli
 * @date 2024/5/29 18:51
 * @description TrackModel
 **/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TrackModel implements Serializable {
    private static final long serialVersionUID = -8252995086740066473L;

    /**
     * 唯一键：UUID
     */
    private String requestId;

    /**
     * 项目code
     */
    private String projectCode;

    /**
     * 事件类型
     */
    private String eventType;

    /**
     * 设备id
     */
    private String deviceId;

    /**
     * 用户ID
     */
    private Long customerId;

    /**
     * openId
     */
    private String openId;

    /**
     * 用户手机号. 原:cusMb
     */
    private String customerMobile;

    /**
     * 访问时间
     */
    private Date requestTime;

    /**
     * 离开时间
     */
    private Date leaveTime;

    /**
     * 页面ID
     */
    private String pageId;

    /**
     * 页面名称
     */
    private String pageName;

    /**
     * 运营商ID
     */
    private Integer agentId;

    /**
     * IP地址
     */
    private String ip;

    /**
     * 经纬度
     */
    private String loc;

    /**
     * 设备类型，客户端类型 0 未知 1 IOS 2 Android 3 公众号 4 小程序 5 生活号
     */
    private Integer clientType;

    /**
     * app版本
     */
    private String appVersion;

    /**
     * 用户代理
     */
    private String userAgent;

    /**
     * 访问令牌
     */
    private String token;

    /**
     * 上一页面
     */
    private String prevPage;

    /**
     * 新增.
     * 前端traceId
     */
    private String appTraceId;
    /**
     * 后端traceId
     */
    private String requestTraceId;
    /**
     * 事件Id //1 扫码 2 点击 3 链接
     */
    private String eventId;
    /**
     * 服务信息
     */
    private String serverInfo;
    /**
     * 访问地址
     */
    private String url;
    /**
     * 请求包
     */
    private String requestBody;
    /**
     * 返回包
     */
    private String responseBody;
    /**
     * 耗时
     */
    private long usedTime;
    /**
     * 页面位置id.
     */
    private String spmId;
    /**
     * 根据硬件算出的id
     */
    private String hardwareId;
    /**
     * 0 非柜子 1 列表 2 详情
     */
    private int cabinetUrlType;
    /**
     * 业务类型
     */
    private String bizType;
    /**
     * 附加信息
     */
    private String ext;

    /**
     * 未知信息.
     */
    @Deprecated
    private String cusMb;

    /**
     * 来源，前一页地址.
     */
    private String referer;
    /**
     * 数据类型
     * @see cn.net.yugu.doraemon.track.enums.DataTypeEnum
     */
    private Integer dataType;
}
